# 本文件为 tmux的配置文件

# > 参考资料
	# - [Tmux 使用教程 - 阮一峰的网络日志](http://www.ruanyifeng.com/blog/2019/10/tmux.html)
	# - [Tmux配置文件大全 - 简书](https://www.jianshu.com/p/a032c09fc7c0)
	# - [tmux配置与用法整理 - Jonky - 博客园](https://www.cnblogs.com/jonky/p/10155696.html)
	# - [tmux_百度百科](https://baike.baidu.com/item/tmux/10234491#5)
	# - [tmux使用及个性化配置_运维_Calvin的博客-CSDN博客](https://blog.csdn.net/qushaming/article/details/90712886)
	# - [我在tmux中最不可少的配置: 用鼠标切换窗口/调节分屏大小 - 巴蛮子 - 博客园](https://www.cnblogs.com/bamanzi/p/tmux-mouse-tips.htmli)

# 使用
	# 使tmux生效
		# 1. 重启tmux起效
		# 2. 先按C+b，然后输入：，进入命令行模式，在命令行模式下输入：source-file ~/.tmux.conf
	
	# 创建并指定session名字： tmux new -s session_name
	# 列出session： tmux ls
	# 进入已存在的session： tmux attach-session -t session_name
	# 删除指定session： tmux kill-session -t session_name
	# 修改session名字： tmux rename-session -t current-name new-name

	# C-b ? 显示快捷键帮助
	# C-b C-o 调换窗口位置，类似与vim 里的C-w
	# C-b 空格键 采用下一个内置布局
	# C-b ! 把当前窗口变为新窗口
	# C-b " 模向分隔窗口
	# C-b % 纵向分隔窗口
	# C-b q 显示分隔窗口的编号
	# C-b o 跳到下一个分隔窗口
	# C-b 上下键 上一个及下一个分隔窗口
	# C-b C-方向键 调整分隔窗口大小
	# C-b c 创建新窗口
	# C-b 0~9 选择几号窗口
	# C-b c 创建新窗口
	# C-b n 选择下一个窗口
	# C-b l 切换到最后使用的窗口
	# C-b p 选择前一个窗口
	# C-b w 以菜单方式显示及选择窗口
	# C-b t 显示时钟
	# C-b ; 切换到最后一个使用的面板
	# C-b x 关闭面板
	# C-b & 关闭窗口
	# C-b s 以菜单方式显示和选择会话
	# C-b d 退出tmux，并保存当前会话，这时，tmux仍在后台运行，可以通过tmux attach进入 到指定的会话
	# C-b [ 可以在tmux窗口进行鼠标滚轮操作，退出可以按q键
	# C-b PageDown/PageUp 可以翻页
	# C-b ：kill-server 删除掉所有session
	# C-b d 临时退出session
	# C-b $ 修改当前session名字

# window
	# Tmux中的window就是用 C-b c 创建出来的窗口，每个window跟tmux所在的终端一样大，window里面可以容纳多个pane。
	# 所有窗口的名称显示在底部状态栏上，切换到指定窗口快捷键是 C-b n, C-b p, C-b 1 .. C-b 9

# pane
	# pane 就是窗口里面的分屏，可以用 C-b o 来切换到下一个pane，或者用 C-b Up 切换到当前pane上方的pane, 用C-b Down切换到当前pane下方的pane.
	# 还有一种切换方法是 C-b q，tmux会显示每个pane的序号，按这个序号就可以跳过去了（按慢了可不行，得在数字消失前按）

## 配置
    #将Ctrl + r 设置为加载配置文件，并显示”Refleshed configure!”信息
	bind C-r source-file ~/.tmux.conf \; display "Refleshed Configure!"

	# copy-mode 将快捷键设置为vi 模式
	#setw -g mode-keys vi

	# 默认前缀为Ctrl + b ，设置前缀为Ctrl + a(不建议这么做，vim中Ctrl+a已经被定义)
	# set -g prefix C-a

	# 解除Ctrl+b 与前缀的对应关系：
	# unbind C-b

	# 使vim在tmux中主题不失效
	set -g default-terminal "screen-256color"

	#允许鼠标操作
	set -g mouse on  
	# 开启用鼠标点击pane来激活该pane
	# 开启用鼠标拖动调节pane的大小（拖动位置是pane之间的分隔线）
	# 开启用鼠标点击来切换活动window（点击位置是状态栏的窗口名称）
	# 开启window/pane里面的鼠标支持（也即可以用鼠标滚轮回滚显示窗口内容，此时还可以用鼠标选取文本）

	#窗口的初始序号；默认为0，这里设置为1
	set-option -g base-index 1

	# 设置状态栏
	# set -g status-right "#{?pane_synchronized,[S],}[#(date)]"

	#提示信息的持续时间；设置足够的时间以避免看不清提示，单位为毫秒
	set-option -g display-time 5000

## 与vim统一窗口切换快捷键
# Smart pane switching with awareness of Vim splits.
# See: https://github.com/christoomey/vim-tmux-navigator
is_vim="ps -o state= -o comm= -t '#{pane_tty}' \
    | grep -iqE '^[^TXZ ]+ +(\\S+\\/)?g?(view|n?vim?x?)(diff)?$'"
bind-key -n 'C-h' if-shell "$is_vim" 'send-keys C-h'  'select-pane -L'
bind-key -n 'C-j' if-shell "$is_vim" 'send-keys C-j'  'select-pane -D'
bind-key -n 'C-k' if-shell "$is_vim" 'send-keys C-k'  'select-pane -U'
bind-key -n 'C-l' if-shell "$is_vim" 'send-keys C-l'  'select-pane -R'

tmux_version='$(tmux -V | sed -En "s/^tmux ([0-9]+(.[0-9]+)?).*/\1/p")'
if-shell -b '[ "$(echo "$tmux_version < 3.0" | bc)" = 1 ]' \
    "bind-key -n 'C-\\' if-shell \"$is_vim\" 'send-keys C-\\'  'select-pane -l'"
if-shell -b '[ "$(echo "$tmux_version >= 3.0" | bc)" = 1 ]' \
    "bind-key -n 'C-\\' if-shell \"$is_vim\" 'send-keys C-\\\\'  'select-pane -l'"

bind-key -T copy-mode-vi 'C-h' select-pane -L
bind-key -T copy-mode-vi 'C-j' select-pane -D
bind-key -T copy-mode-vi 'C-k' select-pane -U
bind-key -T copy-mode-vi 'C-l' select-pane -R
bind-key -T copy-mode-vi 'C-\' select-pane -l
